/*** vender ***/
package util;

import java.util.List;
import java.util.StringTokenizer;

public class Utils {

  public static String[][] listToArray(List<String[]> list) {
    if(list == null || list.size() == 0) return null;
    String[][] res = new String[list.size()][list.get(0).length];
    for (int i = 0; i < list.size(); i++) {
      res[i] = list.get(i);
    }
    return res;
  }

  /**
   * Converte um array em uma string para ser transmitida via socket
   *
   * @param array
   * @return string
   */
  public static String convert(String[][] array) {
    if (array == null) {
      return null;
    }
    StringBuffer buffer = new StringBuffer();
    int nRows = array.length;
    int nCols = array[0].length;
    buffer.append(nRows + "x" + nCols + "|");
    for (int i = 0; i < nRows; i++) {
      for (int j = 0; j < nCols; j++) {
        buffer.append(array[i][j] + "|");
      }
    }
    return buffer.toString();
  }

  /**
   * Converte uma string transmitida via socket em um array
   * Utilize esse metodo somente com parametros gerados por <code>String convert(String[][] array)</code>
   *
   * @param str
   * @return
   */
  public static String[][] convert(String str) {
    if (str == null) {
      return null;
    }

    StringTokenizer st = new StringTokenizer(str, "|");
    String[] dim = st.nextToken().split("x");
    int nRows, nCols;

    try {
      nRows = Integer.parseInt(dim[0]);
      nCols = Integer.parseInt(dim[1]);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }

    String[][] res = new String[nRows][nCols];
    for (int i = 0; i < nRows; i++) {
      for (int j = 0; j < nCols; j++) {
        if (st.hasMoreTokens()) {
          res[i][j] = st.nextToken();
        }
      }
    }
    return res;

  }
}
